home *** CD-ROM | disk | FTP | other *** search
- /*
- * dmz.h
- *
- * Modification History
- * 5/27/94 rrk Implemented support for PPC
- * 2/1/94 by Peter Lovell, GE Information Services
- * for Think C 6.0
- * 9/21/92 rrk Implemented ATalk Trans Queue Handler
- * 2/15/90 pvh - first wrote this. about freakin time...
- *
- */
-
- #ifndef __DMZ__
- #define __DMZ__
-
- #include <Types.h>
- #include <Quickdraw.h>
- #include <ToolUtils.h>
- #include <Fonts.h>
- #include <Events.h>
- #include <Windows.h>
- #include <Dialogs.h>
- #include <Menus.h>
- #include <TextEdit.h>
- #include <Scrap.h>
- #include <SegLoad.h>
- #include <Files.h>
- #include <Devices.h>
- #include <Memory.h>
- #include <Lists.h>
- #include <Script.h>
- #include <Packages.h>
- #include <OSUtils.h>
- #include <CursorCtl.h>
- #include <Traps.h>
- #include <Resources.h>
- #include <Errors.h>
- #include <OSUtils.h>
- #include <Strings.h>
- #include <Gestalt.h>
- #include <ConditionalMacros.h>
- #include <MixedMode.h>
- #include <AppleTalk.h>
- #include "SpinCursor.h"
- #include <LowMem.h>
-
- #define __wchar_t__ // entered to get around header problems with Symantec C IDE
-
- #include <OpenTransport.h>
- #include <OpenTptAppleTalk.h>
- #include <stdlib.h>
-
- /*
- * Structure necessary for MultiFinder compatibility. Our own layer's A5
- * must be saved so globals can be used by the _PLookupName completion routine.
- */
-
- #if powerc
- #pragma options align=mac68k
- #endif
-
- typedef struct myMPPParamBlock {
- long myA5;
- MPPParamBlock myMPP;
- } myMPPParamBlock;
-
- /*
- * This is the structure that defines the "look" of our lists. It includes
- * the object name, type, net, node & socket
- */
- typedef struct myNetworkEntity {
- char object[33];
- char type[33];
- char net[6];
- char node[4];
- char socket[4];
- } myNetworkEntity;
-
- /*
- * A few char codes…
- */
- #define kEnterKey (char)3
- #define kReturnKey (char)13
-
- /*
- * HiliteMode low memory global. We clear a bit at this address for using HiliteRGB
- * when inverting in our LDEF & when selecting items.
- */
- #define HiliteModePtr 0x938
-
- /*
- * Offsets of the structure. Used for the quicksort().
- */
- #define myNetworkEntityObject 0
- #define myNetworkEntityType 33+myNetworkEntityObject
- #define myNetworkEntityNet 33+myNetworkEntityType
- #define myNetworkEntityNode 6+myNetworkEntityNet
- #define myNetworkEntitySocket 4+myNetworkEntityNode
-
- /*
- * Justification constants for our list views.
- */
- #define leftJust 1
- #define rightJust 2
-
- /*
- * various stuff needed for AppleTalk bridging
- */
- #define sysABridge 0x19
- #define ABusVars 0x000002D8
- #define kBridgeSocket 0x6
- #define systemNetwork 0x1A
-
- /*
- * other defines
- */
- #define kMachineNameResourceID -16096
- #define kFlagshipNameResourceID -16413
- #define ddpMaxData 586
- #define ddpMaxRawData 599
- #define kNumBuffers 2
- #define kEchoSocket 4
- #define kEchoType "\pEcho Socket"
- #define kEchoDDPType 4
- #define kMaxNamesToGet 380
- #define kLookupBufSize 32767
-
- /*
- * defines for OpenTransport and ASLM
- */
- #define kDefaultPoolSize 10000
- #define kOpenTransportInitFailed -17000
-
-
- /*
- * defines to indicate a change of status in AppleTalk
- */
- #define ATalkStatusChanged 1
- #define ATalkActivated 2
-
- /*
- * calls for pre-Phase2 AppleTalk
- * (already defined in LSC)
- */
- #ifndef _GetZoneList
- #define _GetZoneList 8
- #endif
-
- #ifndef _GetLocalZone
- #define _GetLocalZone 7
- #endif
-
- #define entryLengths 20 /* 33 standard entityData length */
-
- #define suspendResumeEvt 15
-
- /*
- * Resource ID constants.
- */
-
- /*
- * Resource ID constants for string list items.
- */
- #define kZoneStrID 1
- #define kObjectStrID 2
- #define kTypeStrID 3
- #define kNetStrID 4
- #define kNodeStrID 5
- #define kSktStrID 6
-
- #define kStringListID 128 /* ID for our string list resource */
-
-
- #define appleID 128 /* This is a resource ID */
- #define fileID 129 /* ditto */
- #define editID 130 /* ditto */
-
- #define appleMenu 0 /* MyMenus[] array indexes */
- #define aboutMeCommand 1
-
- #define fileMenu 1
- #define lookupCommand 1
- #define quitCommand 2
-
- #define editMenu 2
- #define cutCommand 3
- #define copyCommand 4
- #define pasteCommand 5
- #define clearCommand 6
- /*#define clearCommand 5*/
-
- /* for sort child menu */
- #define objectItem 1
- #define typeItem 2
- #define netItem 3
- #define nodeItem 4
- #define socketItem 5
-
- /*
- * For the About Sample... DLOG
- */
- #define aboutMeDLOG 128
- #define okButton 1
- #define authorItem 2 /* For SetIText */
- #define languageItem 3 /* For SetIText */
-
- /*
- * For the spin cursor... ACUR
- */
- #define kDMZ_ACUR_ID 0
-
- /*
- * constants for main dialog
- */
- #define kMainDialogID 129
-
- #define kZoneListID 1
- #define kNameTypeListID 2
- #define kZoneItemID 4
- #define kTypeID 5
- #define kObjectID 6
- #define kObjectCountID 7
- #define kProgressID 8
- #define kNetID 9
- #define kNodeID 10
- #define kSocketID 11
- #define kDoLookupID 12
-
- /*
- * constants for lookup dialog
- */
- #define kLookupDialogID 130
- #define kIntervalItem 3
- #define kCountItem 4
- #define kPhase2Item 5
- #define kObjectItem 8
- #define kTypeItem 9
-
- /*
- * constant for Alert dialog
- */
- #define rUserAlert 1000 /* user error alert */
-
-
- #define resumeMask 1 /* bit of message field for resume vs. suspend */
- #define sysEnvironsVersion 1
-
- /*
- * quicksort "mode" constants
- */
- #define sortOnZoneName 1
- #define sortOnObject 1
- #define sortOnType 31
- #define sortOnNet 62
- #define sortOnNode 68
- #define sortOnSocket 72
-
- /*
- * constants for window activation
- */
- #define kActivateWindow 1
- #define kDeactivateWindow 0
-
- /*
- * low memory global for hilite RGB setting
- */
- #define HiliteRGB 0xDA0
-
-
- #define zoneNameSize 33
- #define kDefZonesToGet 64
- #define kMaxZoneBuffSize 32767
-
- /*
- * constants for the gATalkFlags global
- */
-
- #define kVMActive 0
- #define kATQInstalled 1
- #define kSocketBuffsHeld 2
- #define kNameRegistered 3
- #define kATalkActive 4
- #define kSocketBuffsInitd 5
- #define kListenerHeld 6
- #define kOTActive 7 // new flag to indicate Open Transport is active
- #define kOTLookupActive 8
-
- #define SetVMActiveFlag(flags) (flags |= 1 << kVMActive)
- #define ClrVMActiveFlag(flags) (flags &= (-1 ^ (1 << kVMActive)))
- #define TstVMActiveFlag(flags) ((flags & (1 << kVMActive)) != 0)
-
- #define SetATQInstalledFlag(flags) (flags |= 1 << kATQInstalled)
- #define ClrATQInstalledFlag(flags) (flags &= (-1 ^ (1 << kATQInstalled)))
- #define TstATQInstalledFlag(flags) ((flags & (1 << kATQInstalled)) != 0)
-
- #define SetSocketBuffsHeldFlag(flags) (flags |= 1 << kSocketBuffsHeld)
- #define ClrSocketBuffsHeldFlag(flags) (flags &= (-1 ^ (1 << kSocketBuffsHeld)))
- #define TstSocketBuffsHeldFlag(flags) ((flags & (1 << kSocketBuffsHeld)) != 0)
-
- #define SetNameRegisteredFlag(flags) (flags |= 1 << kNameRegistered)
- #define ClrNameRegisteredFlag(flags) (flags &= (-1 ^ (1 << kNameRegistered)))
- #define TstNameRegisteredFlag(flags) ((flags & (1 << kNameRegistered)) != 0)
-
- #define SetATalkActiveFlag(flags) (flags |= 1 << kATalkActive)
- #define ClrATalkActiveFlag(flags) (flags &= (-1 ^ (1 << kATalkActive)))
- #define TstATalkActiveFlag(flags) ((flags & (1 << kATalkActive)) != 0)
-
- #define SetSocketBuffsInitdFlag(flags) (flags |= 1 << kSocketBuffsInitd)
- #define ClrSocketBuffsInitdFlag(flags) (flags &= (-1 ^ (1 << kSocketBuffsInitd)))
- #define TstSocketBuffsInitdFlag(flags) ((flags & (1 << kSocketBuffsInitd)) != 0)
-
- #define SetListenerHeldFlag(flags) (flags |= 1 << kListenerHeld)
- #define ClrListenerHeldFlag(flags) (flags &= (-1 ^ (1 << kListenerHeld)))
- #define TstListenerHeldFlag(flags) ((flags & (1 << kListenerHeld)) != 0)
-
- #define SetOTActiveFlag(flags) (flags |= 1 << kOTActive)
- #define ClrOTActiveFlag(flags) (flags &= (-1 ^ (1 << kOTActive)))
- #define TstOTActiveFlag(flags) ((flags & (1 << kOTActive)) != 0)
-
- #define SetOTLookupActiveFlag(flags) (flags |= 1 << kOTLookupActive)
- #define ClrOTLookupActiveFlag(flags) (flags &= (-1 ^ (1 << kOTLookupActive)))
- #define TstOTLookupActiveFlag(flags) ((flags & (1 << kOTLookupActive)) != 0)
-
-
- /*
- * AppleTalk Phase 2 calls
- */
-
- /*
- * csCodes for new .XPP driver calls
- */
- #ifndef xCall
- #define xCall 246
- #endif
-
- /*
- * xppSubCodes
- */
- #ifndef zipGetLocalZones
- #define zipGetLocalZones 5
- #endif
- #ifndef zipGetZoneList
- #define zipGetZoneList 6
- #endif
- #ifndef zipGetMyZone
- #define zipGetMyZone 7
- #endif
-
- /*
- * mpp csCodes
- */
- #ifndef getAppleTalkInfo
- #define getAppleTalkInfo 258
- #endif
-
- /*
- * offsets for packet buffers to be used by socket listener
- */
- typedef struct {
- QElemPtr qLink;
- short qType;
- short buffer_type; /* DDP Type */
- short buffer_NodeID; /* Destination Node */
- AddrBlock buffer_Address; /* Source Address in AddrBlock format */
- short buffer_Hops; /* Hop count */
- short buffer_ActCount; /* length of DDP datagram */
- OSErr buffer_CheckSum; /* Checksum returned here */
- long buffer_Ticks; /* Timestamp of processing by socket listener */
- char buffer_Data[ddpMaxData]; /* the DDP datagram */
- } PacketBuffer;
-
- typedef PacketBuffer *PacketPtr;
-
- /*
- * The following stuff is implemented for the AppleTalk Transition Queue
- */
-
- #define ATTransOpen 0 /* .MPP just opened */
- #define ATTransClose 2 /* .MPP is closing */
- #define ATTransClosePrep 3 /* OK for .MPP to close? */
- #define ATTransCancelClose 4 /* .MPP close was canceled */
- #define ATTransNetworkTransition 5 /* .MPP Network ADEV transition */
- #define ATTransNameChangeTellTask 6 /* Flagship name is changing */
- #define ATTransNameChangeAskTask 7 /* OK to change Flagship name */
- #define ATTransCancelNameChange 8 /* Flagship name change was canceled */
- #define ATTransCableChange 'rnge' /* Cable Range Change has occurred */
- #define ATTransSpeedChange 'sped' /* Change in processor speed has occurred */
-
- /*----------------------------------------------------------------------
- NBP Name Change Info record
- ----------------------------------------------------------------------*/
- typedef struct NameChangeInfo {
- Str32 newObjStr; /* new NBP name */
- Ptr name; /* Ptr to location to place a pointer to Pascal string of */
- /* name of process that NAK'd the event */
- }
- NameChangeInfo, *NameChangePtr, **NameChangeHdl;
-
- /*----------------------------------------------------------------------
- Network Transition Info Record
- ----------------------------------------------------------------------*/
-
- typedef struct TNetworkTransition {
- Ptr private; /* pointer to private structure */
- ProcPtr netValidProc; /* pointer to network validation procedure */
- Boolean newConnectivity; /* true = new connection */
- /* false = loss of connection */
-
- }
- TNetworkTransition , *TNetworkTransitionPtr, **TNetworkTransitionHdl;
-
-
- typedef pascal long (*NetworkTransitionProcPtr)(TNetworkTransitionPtr netTrans, \
- unsigned long theNet);
-
- /*----------------------------------------------------------------------
- Cable Range Transition Info Record
- ----------------------------------------------------------------------*/
- typedef struct TNewCRTrans {
- short newCableLo; /* the new Cable Lo received from RTMP */
- short newCableHi; /* the new Cable Hi received from RTMP */
- }
- TNewCRTrans , *TNewCRTransPtr, **TNewCRTransHdl;
-
- /*----------------------------------------------------------------------
- AppleTalk Transition Queue Element
- ----------------------------------------------------------------------*/
- typedef struct myATQEntry {
- struct ATQEntry *qLink; /* have to maintain standard ATQ entries */
- short qType;
- ATalkTransitionEventUPP CallAddr;
- Handle globs; /* handle to user defined globals */
- long myA5; // A5 saved for the ATQ routine
- }
- myATQEntry, *myATQEntryPtr, **myATQEntryHdl;
-
- /*----------------------------------------------------------------------
- Transition Queue global values
- ----------------------------------------------------------------------*/
- typedef struct dmzEntry {
- Boolean atalkStatusChanged; /* status of AppleTalk has changed */
- Boolean atalkActive; /* AppleTalk is active/inactive */
- NamesTableEntry *dmzNTEPtr; /* -> NTE entry to Remove name */
- }
- dmzEntry, *dmzEntryPtr, **dmzEntryHdl;
-
- /*----------------------------------------------------------------------
- ProcPtr defines for PowerPC
- ----------------------------------------------------------------------*/
- enum {
- uppInitListenerProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(QHdrPtr)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(QHdrPtr)))
- };
-
- typedef pascal OSErr (*InitSktListenerProcPtr)(QHdr *freeQ, QHdr *usedQ);
-
- #if USESROUTINEDESCRIPTORS
- typedef UniversalProcPtr InitSktListenerUPP;
-
- #define CallInitSktListenerProc(userRoutine, freeQ, usedQ) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppInitListenerProcInfo, (freeQ), (usedQ))
- #define NewInitSktListenerProc(userRoutine) \
- (InitSktListenerUPP) NewRoutineDescriptor((ProcPtr)userRoutine, uppInitListenerProcInfo, kM68kISA)
-
- #else
-
- typedef InitSktListenerProcPtr InitSktListenerUPP;
-
- #define CallInitSktListenerProc(userRoutine, freeQ, usedQ) \
- (userRoutine)(freeQ, usedQ)
- #define NewInitSktListenerProc(userRoutine) \
- (InitSktListenerUPP)(userRoutine)
-
- #endif
-
- /*----------------------------------------------------------------------
- raw DDP packet buffer
- ----------------------------------------------------------------------*/
- typedef struct RawDDPPacket {
- UInt8 data[586 + 13]; // 586 is the TSDU size for DDP, 13 is for the long DDP Header
- }
- RawDDPPacket, *RawDPPPacketPtr, **RawDPPPacketHndl;
-
- /* prototypes ************* */
-
- /* dmzmain.c */
- extern void myVBLSpinInstall(void);
- extern int stopAndDisposeSpinCursor(void);
- extern void DrawBoldItem(WindowPtr whichWindow, short theItem, short whichStrID);
- extern pascal void updateUserItems(WindowPtr whichWindow, short theItem);
- extern void getandSetIt(short whichID);
- extern void setupUserItems(void);
- extern void setupLookupItem(void);
- extern void doLookupItem(void);
- extern void setWindowStdState(WindowPtr theWindow);
- extern void setUpDialogs(void);
- extern void FrameItem(DialogPtr whichDialog, short whichItem);
- extern void doModeless(DialogPtr whichDialog, short whichItem);
- extern void doIdle(void);
- extern void DrawGrowBox(WindowPtr theWindow);
- extern void doUpdate(WindowPtr theWindow);
- extern void ShowMainWindowAndSizeIt(void);
- extern void doInitializing(void);
- extern short resizeRectToListCellSize(short height);
- extern void resizeWindow(WindowPtr whichWindow, short height);
- extern Boolean IsAppWindow(WindowPtr window);
- extern Boolean IsDAWindow(WindowPtr window);
- extern Boolean DoCloseWindow(WindowPtr window);
- extern void DoZoomWindow(WindowPtr whichWindow, short partCode);
- extern void DoGrowWindow(WindowPtr whichWindow, EventRecord *evt);
- extern void doActivate(WindowPtr theWindow);
- extern void doDeactivate(WindowPtr theWindow);
- extern void doCleanUpAndTerminate(void);
- extern void setupMenus(void);
- extern void handleLookupDialogEdit(void);
- extern void doCommand(long mResult);
- extern pascal void aboutDialogOKFrame(WindowPtr theWindow, short itemNo);
- extern void centerDialog(WindowPtr theWindow);
- extern void showAboutMeDialog(void);
- extern void BigBadError(Str255 message);
- extern Boolean TrapAvailable(short theTrap);
- extern Boolean IsVMOn(void);
- extern short NumToolboxTraps(void);
- extern TrapType GetTrapType(short theTrap);
- extern void DoSpinCursor(void);
- extern void StopSpinCursor(void);
-
-
-
- /* dmzlists.c */
-
- extern void invalidateItem(short whichItem);
- extern void DisposOfMyLists(void);
- extern void OpenZonesList(void);
- extern void tellUserNoZones(void);
- extern int myCompare(const void *aStr, const void *bStr);
- extern void letsSort(Ptr theBuffPtr, short numZonesGot, short number);
- extern void SetZoneCells(Ptr bufferPtr, short NumZonesGot);
- extern void doZonesListStuff(void);
- extern void OpenObjectTypeList(void);
- extern void doObjectDoubleClick(void);
- extern void doObjectTypeListStuff(void);
- extern void padEntry(unsigned char *entry, short length, short just);
- extern void SetObjectTypeCells(Ptr bufferPtr, short numDevicesGot);
- extern void ClearZoneCells();
- extern void ClearObjectTypesList();
- extern short pcmp(StringPtr s1, StringPtr s2);
-
- /* dmzat.c */
- extern pascal void saveThatA5(void);
- extern pascal void restoreThatA5(void);
- extern void saveThisA5(myATQEntry *atqEntry);
-
- extern unsigned char *Pstrcat(unsigned char *s, unsigned char *t);
- extern unsigned char PStrLen(unsigned char *e);
- extern Boolean PStrComp(unsigned char *str1, unsigned char *str2);
- extern void killLookups(void);
- extern void removeMyNameAndSocket(void);
- extern void closeUpOurAppleTalk(void);
- extern void registerMyName(void);
- extern void enableSetSelfSend(void);
- extern void phase2Check(void);
- extern void InitAppleTalkVars(void);
- extern void addToUnpackedBuffer(Ptr oldBuffer, Ptr newBuffer, short numGot, short total);
- extern void getMyZone(char *myZoneBuffer);
- extern void doGetZoneListPhs2(void);
- extern void doGetZoneListPrePh2(void);
- extern Boolean zonesPresent(void);
- extern void setItemString(DialogPtr whichDialog, short whichItem, Str255 str);
- extern void getTheZoneList(void);
- extern void processListUpdate(void);
- extern void myCompletionRoutine(ParamBlockRec *paramBlock);
- extern void setUpdateListFlag(void);
- extern char giveMeItemValue(short whichItem);
- extern void giveMeItemString(short whichItem, Str255 str);
- extern void getTypesNamesInZone(char *NBPZone);
- extern void doGetMyZonePhs2(void);
- extern void doGetLocalZonesPhs2(void);
- extern void doGetZoneListPhs2(void);
- extern void setupEchoDialog(DialogPtr echoDialog, myNetworkEntity *myEnt);
- extern void doEcho(myNetworkEntity *myEnt);
- extern long ATalkTransQueue(long selector, myATQEntry *q, void *p);
- extern OSErr InitEchoBuffers(void);
- extern short AppleTalkVersion(void);
- extern Boolean GestaltAvailable(void);
- extern Boolean LAPMgrExists(void);
- extern void restoreSetSelfSend();
-
- /* dmzOT.c */
- extern OSErr ActivateOpenTransport(void);
- extern Boolean OpenTransportActive(void);
- extern void GetBridgeAddressFromOT(AddrBlock *theAddr);
- extern void CleanupOTServices(void);
- extern short addToOTUnpackedBuffer(Ptr packedBuffer, Ptr unpackedBuffer, long len);
- extern UInt16 OTMySetNBPEntity(char *buffer, Ptr nbpObject, Ptr nbpType, Ptr nbpZone);
- extern void DoOTGetMyZone(char *myZoneBuffer);
- extern void DoOTNameLookup(char *NBPObject, char *NBPType, char *NBPZone);
- extern pascal void MyDMZNBPHandler(void* contextPtr, OTEventCode event, OTResult result, void* cookie);
- extern void OTSetObjectTypeCells(Ptr ptr, short numDevicesGot);
- extern void OTDeleteMyName (void);
- extern void OTRegisterMyName (void);
- extern void DoOTGetZoneList(void);
- extern void ProcessOTListUpdate(char *resultStr);
- extern void doOTEcho(myNetworkEntity *myEnt);
-
- /* OpenTptUtilities.c */
- extern short OTExtractNBPCName(const NBPEntity* entity, char* field, UInt32 offset, UInt8 *delimiter);
-
- #if powerc
- #pragma options align=reset
- #endif
-
- #endif // __DMZ__